OAuth2 কি এবং কেন প্রয়োজন?

Java Technologies - স্প্রিং বুট ক্লায়েন্ট (Spring Boot Client) - Spring Boot এবং OAuth2 Integration
133

OAuth2: একটি পরিচিতি

OAuth2 (Open Authorization 2.0) হলো একটি প্রটোকল যা ব্যবহারকারীর ক্রেডেনশিয়াল প্রকাশ না করেই তৃতীয় পক্ষের অ্যাপ্লিকেশনগুলোকে কোনো রিসোর্স (যেমন: API, ডেটা, বা সার্ভিস) অ্যাক্সেস করার অনুমতি দেয়। এটি স্পষ্টতই অথেনটিকেশন এবং অথরাইজেশনের জন্য ব্যবহৃত হয় এবং মূলত টোকেন-ভিত্তিক অথরাইজেশনের মাধ্যমে কাজ করে।


OAuth2 কেন প্রয়োজন?

OAuth2 এর প্রধান প্রয়োজন হলো নিরাপদ অথরাইজেশন। কিছু সাধারণ প্রয়োজনীয়তাগুলি হলো:

  1. ব্যক্তিগত তথ্যের সুরক্ষা: ব্যবহারকারীর পাসওয়ার্ড বা সংবেদনশীল তথ্য শেয়ার না করেও তৃতীয় পক্ষের অ্যাপ্লিকেশন ব্যবহার করতে পারে।
  2. সেশন-মুক্ত অথরাইজেশন: টোকেনের মাধ্যমে কাজ করে বলে ব্যবহারকারীকে বারবার লগইন করতে হয় না।
  3. API অথরাইজেশন: ক্লায়েন্ট অ্যাপ্লিকেশনগুলো নির্দিষ্ট API রিসোর্সগুলোতে সীমিত অ্যাক্সেস পায়।
  4. বহু ডিভাইস সাপোর্ট: ওয়েব, মোবাইল, এবং ডেস্কটপ অ্যাপ্লিকেশনের জন্য একই অথরাইজেশন প্রক্রিয়া।
  5. স্ট্যান্ডার্ডাইজড প্রটোকল: OAuth2 একটি গ্লোবাল স্ট্যান্ডার্ড, তাই এটি বিভিন্ন প্ল্যাটফর্মে সমর্থনযোগ্য।

OAuth2 এর মূল ধারণা

OAuth2 মূলত চারটি গুরুত্বপূর্ণ রোল নির্ধারণ করে:

  1. Resource Owner: রিসোর্সের মালিক (ব্যবহারকারী বা সিস্টেম)।
  2. Resource Server: রিসোর্স হোস্ট করে (যেমন: API)।
  3. Client Application: তৃতীয় পক্ষের অ্যাপ্লিকেশন যা রিসোর্স অ্যাক্সেস করতে চায়।
  4. Authorization Server: টোকেন ইস্যু করে এবং ক্লায়েন্টের অথেনটিকেশন ভেরিফাই করে।

OAuth2 কাজ করার পদ্ধতি

OAuth2 কাজ করে একটি Access Token এর মাধ্যমে। নিচে প্রক্রিয়াটি ধাপে ধাপে ব্যাখ্যা করা হলো:

  1. Authorization Request: ক্লায়েন্ট অ্যাপ্লিকেশন ব্যবহারকারীর অনুমতি চায়।
  2. Authorization Grant: ব্যবহারকারী অনুমতি দেয় এবং একটি Authorization Code সরবরাহ করা হয়।
  3. Access Token Issue: ক্লায়েন্ট অ্যাপ্লিকেশন এই কোডটি ব্যবহার করে Access Token সংগ্রহ করে।
  4. API Access: ক্লায়েন্ট অ্যাপ্লিকেশন এই টোকেনটি ব্যবহার করে নির্দিষ্ট API বা রিসোর্সে অ্যাক্সেস পায়।

OAuth2 এর Grant Types

OAuth2 বিভিন্ন প্রয়োজনীয়তার উপর ভিত্তি করে চারটি গ্রান্ট টাইপ সরবরাহ করে:

  1. Authorization Code Grant: ওয়েব এবং মোবাইল অ্যাপ্লিকেশনের জন্য সবচেয়ে নিরাপদ এবং সাধারণত ব্যবহৃত হয়।
  2. Implicit Grant: ক্লায়েন্ট-সাইড অ্যাপ্লিকেশনের জন্য দ্রুত অথরাইজেশনের পদ্ধতি (কিন্তু কম নিরাপদ)।
  3. Resource Owner Password Credentials Grant: ব্যবহারকারী সরাসরি পাসওয়ার্ড প্রদান করে (কম ব্যবহৃত কারণ এটি নিরাপত্তার জন্য ঝুঁকিপূর্ণ)।
  4. Client Credentials Grant: সার্ভার-টু-সার্ভার কমিউনিকেশনের জন্য ব্যবহৃত হয়।

স্প্রিং বুট ক্লায়েন্টে OAuth2 ব্যবহার

স্প্রিং বুট ক্লায়েন্টে OAuth2 ব্যবহার করা সহজ এবং এটি Spring Security এর মাধ্যমে সম্পন্ন হয়। নিচে ধাপে ধাপে OAuth2 ইন্টিগ্রেশনের পদ্ধতি দেখানো হলো:


OAuth2 কনফিগারেশন

১. ডিপেন্ডেন্সি যুক্ত করা:

pom.xml এ নিচের ডিপেন্ডেন্সি যুক্ত করুন:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>

২. application.yml ফাইল কনফিগারেশন:

application.yml ফাইলে OAuth2 ক্লায়েন্টের কনফিগারেশন যুক্ত করুন।

spring:
  security:
    oauth2:
      client:
        registration:
          google:
            client-id: YOUR_CLIENT_ID
            client-secret: YOUR_CLIENT_SECRET
            scope:
              - openid
              - profile
              - email
            redirect-uri: "{baseUrl}/login/oauth2/code/google"
            authorization-grant-type: authorization_code
        provider:
          google:
            authorization-uri: https://accounts.google.com/o/oauth2/auth
            token-uri: https://oauth2.googleapis.com/token
            user-info-uri: https://openidconnect.googleapis.com/v1/userinfo

৩. Security Configuration তৈরি:

OAuth2 এর জন্য একটি কাস্টম সিকিউরিটি কনফিগারেশন ক্লাস তৈরি করুন।

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.oauth2.client.web.OAuth2LoginAuthenticationFilter;
import org.springframework.security.web.SecurityFilterChain;

@Configuration
public class SecurityConfig {

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests()
            .anyRequest().authenticated()
            .and()
            .oauth2Login(); // OAuth2 Login Enable
        return http.build();
    }
}

৪. REST API কল করার জন্য Access Token ব্যবহার:

RestTemplate বা WebClient দিয়ে অ্যাক্সেস টোকেন ব্যবহার করে API অ্যাক্সেস করুন।

import org.springframework.security.oauth2.client.OAuth2AuthorizedClient;
import org.springframework.security.oauth2.client.annotation.RegisteredOAuth2AuthorizedClient;
import org.springframework.security.oauth2.core.OAuth2AccessToken;
import org.springframework.stereotype.Service;
import org.springframework.web.reactive.function.client.WebClient;

@Service
public class ApiService {

    private final WebClient webClient;

    public ApiService(WebClient.Builder webClientBuilder) {
        this.webClient = webClientBuilder.build();
    }

    public String getProtectedResource(
            @RegisteredOAuth2AuthorizedClient("google") OAuth2AuthorizedClient authorizedClient) {

        OAuth2AccessToken accessToken = authorizedClient.getAccessToken();

        return webClient.get()
                .uri("https://api.example.com/protected-resource")
                .headers(headers -> headers.setBearerAuth(accessToken.getTokenValue()))
                .retrieve()
                .bodyToMono(String.class)
                .block();
    }
}

OAuth2 এর সুবিধা

  1. নিরাপত্তা: পাসওয়ার্ড বা সংবেদনশীল তথ্য প্রকাশ ছাড়াই রিসোর্স অ্যাক্সেস করা যায়।
  2. স্ট্যান্ডার্ডাইজড অথরাইজেশন: OAuth2 বিভিন্ন সিস্টেমের মধ্যে একটি সাধারণ অথরাইজেশন মডেল সরবরাহ করে।
  3. বহুমুখী ব্যবহার: ওয়েব, মোবাইল এবং সার্ভার-টু-সার্ভার অথরাইজেশনে কার্যকর।
  4. লিমিটেড অ্যাক্সেস: ক্লায়েন্ট অ্যাপ্লিকেশন শুধু নির্দিষ্ট ডেটা বা ফিচার অ্যাক্সেস করতে পারে।
  5. Token Expiration: টোকেনের মেয়াদ শেষ হওয়ার সুবিধা রয়েছে যা নিরাপত্তা বৃদ্ধি করে।

উপসংহার

OAuth2 ব্যবহারকারীর অথেনটিকেশন এবং অথরাইজেশন প্রক্রিয়াকে সহজ, নিরাপদ এবং স্ট্যান্ডার্ড করে। স্প্রিং বুট ক্লায়েন্টে OAuth2 ইন্টিগ্রেশন সহজ এবং কার্যকর। এটি ব্যবহার করে তৃতীয় পক্ষের API এবং সিস্টেমের সাথে নিরাপদ অথরাইজেশন নিশ্চিত করা যায়।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...